﻿namespace Journey.Security
{
    using System;

    /// <summary>
    /// 用户基本信息。
    /// </summary>
    public class User : UserBase
    {
        /// <summary>
        /// 用户名称。
        /// </summary>
        private string _name = string.Empty;

        /// <summary>
        /// 邮箱。
        /// </summary>
        private string _email = string.Empty;

        /// <summary>
        /// 账号。
        /// </summary>
        public Account Account { get; set; }

        /// <summary>
        /// 用户名称。
        /// </summary>
        public override string Name
        {
            get
            {
                return this._name;
            }
            set
            {
                if (string.IsNullOrWhiteSpace(value))
                {
                    throw new ArgumentNullException("value", "用户名称不可以是空的。");
                }

                if (!UserValidator.Current.IsChar(value))
                {
                    throw new ArgumentException("用户名称只可以是字符。", "value");
                }

                this._name = value;
            }
        }

        /// <summary>
        /// 邮箱。
        /// </summary>
        public override string Email
        {
            get
            {
                return this._email;
            }
            set
            {
                if (string.IsNullOrWhiteSpace(value))
                {
                    throw new ArgumentNullException("value", "电子邮箱不可以是空的。");
                }

                if (!UserValidator.Current.IsEmail(value))
                {
                    throw new ArgumentException("电子邮箱的格式不正确。", "value");
                }

                this._email = value;
            }
        }
    }
}